Content validation for documentation topics using provider information

ABSTRACT

At least one processor may determine one or more issues in one or more of a plurality of documentation topics that document at least one software functionality based at least upon applying one or more business rules to the one or more of the plurality of documentation topics. Responsive to determining the one or more issues, one or more entries may be inserted into an issues report, wherein the one or more entries include information regarding the one or more issues.

This application is a Continuation of U.S. application Ser. No.13/776,381, filed Feb. 25, 2013 entitled CONTENT VALIDATION FORDOCUMENTATION TOPICS USING PROVIDER INFORMATION, the entire content ofwhich is incorporated herein by reference.

TECHNICAL FIELD

The present disclosure relates to documentation validation, and morespecifically relates to generating issue reports based on validating thecontent and metadata of documentation topics.

BACKGROUND

A web service interface to a particular product may be defined by anapplication model. The application model may include semantic constructsthat semantically define the web service interface and may also includedocumentation topics that document the web service interface. Adeveloper may define new semantic constructs for the web serviceinterface and may provide initial documentation topics for the newsemantic constructs. At a later time, an information developer (e.g., atechnical writer) may provide client-facing documentation topicsregarding the same new semantic constructs. As the developer defines newsemantic constructs or revises previously-defined semantic constructsfor the web service interface, existing documentation topics may bemodified and new documentation topics may be added. Errors andinconsistencies in the documentation topics may be difficult to detectas semantic constructs are created and revised and as the documentationtopics are created and revised.

SUMMARY

In one example, the disclosure is directed to a method for validatingdocumentation for at least one software functionality. The method mayinclude determining, by at least one processor, one or more issues inone or more of a plurality of documentation topics that document atleast one software functionality based at least upon applying one ormore business rules to the one or more of the plurality of documentationtopics, including one or more of: applying the one or more businessrules to metadata of the one or more of the plurality of documentationtopics to cross-reference the metadata of the one or more of theplurality of documentation topics with a semantic model for the at leastone software functionality, applying the one or more business rules tocontent of the one or more of the plurality of documentation topics tocross-reference the content of the one or more of the plurality ofdocumentation topics with the semantic model for the at least onesoftware functionality, and applying the one or more business rules tometadata of the one or more of the plurality of documentation topics andmetadata of one or more related documentation topics to test consistencybetween the metadata of the one or more of the plurality ofdocumentation topics with the metadata of the one or more relateddocumentation topics. The method may further include responsive todetermining the one or more issues, inserting, by the at least oneprocessor, one or more entries into an issues report, wherein the one ormore entries include information regarding the one or more issues.

In another example, the disclosure is directed to a system. The systemmay include at least one processor. The system may further include amemory. The system may further include a model processing module storedin the memory and operable by the at least one processor to: determine,by at least one processor, one or more issues in one or more of aplurality of documentation topics that document at least one softwarefunctionality based at least upon applying one or more business rules tothe one or more of the plurality of documentation topics, including oneor more of: apply the one or more business rules to metadata of the oneor more of the plurality of documentation topics to cross-reference themetadata of the one or more of the plurality of documentation topicswith a semantic model for the at least one software functionality, applythe one or more business rules to content of the one or more of theplurality of documentation topics to cross-reference the content of theone or more of the plurality of documentation topics with the semanticmodel for the at least one software functionality, and apply the one ormore business rules to metadata of the one or more of the plurality ofdocumentation topics and metadata of one or more related documentationtopics to test consistency between the metadata of the one or more ofthe plurality of documentation topics with the metadata of the one ormore related documentation topics; and responsive to determining the oneor more issues, insert one or more entries into an issues report,wherein the one or more entries include information regarding the one ormore issues.

In another example, the disclosure is directed to a computer-readablestorage medium containing instructions. The instructions, when executedby at least one processor, may cause the at least one processor toperform operations. The operations may include determining, by the atleast one processor, one or more issues in one or more of a plurality ofdocumentation topics that document at least one software functionalitybased at least upon applying one or more business rules to the one ormore of the plurality of documentation topics, including one or more of:applying the one or more business rules to metadata of the one or moreof the plurality of documentation topics to cross-reference the metadataof the one or more of the plurality of documentation topics with asemantic model for the at least one software functionality, applying theone or more business rules to content of the one or more of theplurality of documentation topics to cross-reference the content of theone or more of the plurality of documentation topics with the semanticmodel for the at least one software functionality, and applying the oneor more business rules to metadata of the one or more of the pluralityof documentation topics and metadata of one or more relateddocumentation topics to test consistency between the metadata of the oneor more of the plurality of documentation topics with the metadata ofthe one or more related documentation topics. The operations may furtherinclude responsive to determining the one or more issues, inserting, bythe at least one processor, one or more entries into an issues report,wherein the one or more entries include information regarding the one ormore issues.

The details of one or more examples of the disclosure are set forth inthe accompanying drawings and the description below. Other features,objects, and advantages of the disclosure will be apparent from thedescription and drawings, and from the claims.

BRIEF DESCRIPTION OF DRAWINGS

FIG. 1 is a block diagram illustrating an example server that providesservices and an example client that accesses the provided services,according to some aspects of the present disclosure.

FIG. 2 is a block diagram illustrating an example device that producesservice descriptions and documentation files according to some aspectsof the present disclosure.

FIG. 3 is a block diagram illustrating an example system for validatingand generating documentation for an example documentation topicaccording to some aspects of the present disclosure.

FIG. 4 is a block diagram illustrating an example computing deviceaccording to some aspects of the present disclosure.

FIG. 5 is a flowchart illustrating an example process for validating adocumentation topic according to some aspects of the present disclosure.

DETAILED DESCRIPTION

In general, the disclosure is directed to validating documentationtopics, such as documentation of software functionalities. For example,documentation of a web service interface can be validated by validatingthe content of and metadata associated with the documentation topics inthe documentation with the corresponding semantic constructs for the webservice interface, to determine any inconsistencies between thedocumentation topics and the corresponding semantic constructs or otherrelated documentation topics. The techniques utilize informationregarding providers of the documentation topics, in conjunction withinformation about consumers of the documentation topics, to applyspecific business rules, thereby reducing the potential for error andmissing content. Overall, this may contribute to a higher level ofaccuracy, completeness, and quality of documentation produced for allconsumers.

A documentation topic may contain or otherwise be associated withmetadata that provides certain information regarding the associateddocumentation topic. For example, the metadata may include informationregarding the topic type, the topic ID, the topic provider, the topicconsumer, and the modification date of the associated documentationtopic. The semantic constructs modeling the web service interface may,in some examples, semantically define the methods provided by the webservice interface to access a web service. For example, the semanticconstructs may, for a method provided by the web service interface,semantically define the parameters of the method, the types accepted andreturned by the method, and the like. A documentation topic thatdocuments a specified function of the web service interface maycorrespond to a semantic construct that semantically defines thatfunction of the web service interface. The metadata associated with thedocumentation topic may be compared to the corresponding semanticconstruct according to a set of business rules. For example, if thetopic type for the documentation topic is set to obsolete in themetadata, the corresponding semantic construct may be checked todetermine if the corresponding semantic construct is also set toobsolete. Conversely, if a semantic construct is set to obsolete, themetadata associated with the corresponding documentation topic may bechecked to determine if the documentation topic is set to obsolete inthe metadata. The metadata may also be compared to metadata in relateddocumentation topics.

Metadata associated with a documentation topic may also be used todetermine if the documentation topic is to be included in a generateddocumentation file. For example, if the generated documentation file isdirected towards clients, but the metadata associated with adocumentation topic specifies that the documentation topic is directedtowards in-house developers, then that documentation topic may not beincluded in the generated documentation file.

By validating metadata associated with a documentation topic with acorresponding semantic construct, errors and inconsistencies in thedocumentation topics may be more quickly and accurately detected as thesemantic model and the documentation topics are continually revised.Furthermore, by using the metadata associated with a documentation topicto determine whether to include the associated documentation topic, thedocumentation may be customized for different audiences.

FIG. 1 is a block diagram illustrating an example server that providesservices and an example client that accesses the provided services,according to some aspects of the present disclosure. As shown in FIG. 1,server 104 may include service provider 110 and service interface 106for accessing the software functionality provided by service provider110. In some examples, server 104 may be a web server, service provider110 may be a web application, and service interface 106 may be a webservice interface. Server 104 may produce service description 108 thatdescribes the interface for accessing the software functionality ofservice provider 110. In some examples, if service provider 110 is a webapplication, then service description 108 may be written using WebServices Description Language (WSDL) to describe service provider 110'sinterface. One or more clients 102 may consume service description 108to determine how to interact with service provider 110's interface toaccess the software functionality of service provider 110. For example,one or more clients 102 may generate and send calls to service provider110's interface to enable service provider 110 to perform an operationbased at least in part on the description provided by servicedescription 108 of service provider 110's interface.

FIG. 2 is a block diagram illustrating an example device that producesservice descriptions and documentation files according to some aspectsof the present disclosure. Although FIG. 2 is described in terms of aweb service interface, it should be understood that the example deviceshown in FIG. 2 is capable of producing service descriptions anddocumentation files for a variety of software functionalities apart froma web service interface. As shown in FIG. 2, device 202 may be a serveror and other suitable computing device that may include model processingmodule 218 and document generation module 224. Model processing module218 may process semantic model 208 to generate service description 216,issues report 222, and documentation that may be used by developers ofthe model and other internal consumers. Document generation module 224may process a document generated by model processing module 218 togenerate documentation files 220 that may be used by external users(e.g., developers of applications that uses the service description216).

Semantic model 208 may define a web service interface and may includesemantic constructs 212A-212N (“semantic constructs 212”) thatsemantically model a web service interface. Semantic constructs 212 mayinclude documentation topics 210A-210N (“documentation topics 210”) thatdocument the web service interface. For example, semantic construct 212Amay include documentation topic 210A that documents the web servicefunctionality defined by the associated semantic construct 212A.Documentation topics 212 may include respective documentation content206A-206N (“documentation content 206”) and metadata 214A-214N(“metadata 214”). Documentation topic 206 may be written text thatexplains one or more software functionality of the web serviceinterface. Metadata 214 may describe documentation content 212 indocumentation topic 210. In some examples, a documentation topic, suchas documentation topic 210A, may conceptually be ‘tagged’ with metadata214A.

Model processing module 218 may process semantic model 208 to produceservice description 216, issues report 222, and internal documentation.Model processing module 218 may generate service description 216 basedat least upon application model 208 that semantically models the webservice interface. Service description 216 may be a machine-readabledescription of the web service interface and how those interfaces may beaddressed and accessed by clients. In some examples, service description216 may be a WSDL file that may be consumed by SOAP toolkits.

Model processing module 218 may also validate documentation topics 210to detect issues such as common errors, omissions, and discrepanciesbetween a documentation topic, such as documentation topic 210A, and theassociated semantic construct that defines the software functionalitydocumented by the associated documentation topic, such as semanticconstruct 212A that includes documentation topic 210A, by applying a setof business rules to metadata 214A associated with documentation topic210A to determine any such issues. Such business rules may validatemetadata 214A associated with documentation topic 210A with semanticconstruct 212A that describes the software functionality of the webservice interface documented by documentation topic 210A to determine ifdocumentation content 212 is semantically consistent with semanticconstruct 212A. Model processing module 218 may also comparedocumentation topic 210A against one or more related documentationtopics. If any issues are found in the documentation topic 210A, modelprocessing module 218 may create entries in issues report 222 thatindicate such issues with documentation topic 210A.

Model processing module 218 may generate internal documentation filesintended for model developers and other internal users based at leastupon semantic model 208, documentation topics 210, metadata 214, andsemantic constructs 212. Model processing module 224 may generatedocumentation files 220 intended for external users based on a documentcreated by model processing module 218. Documentation files 220 may behuman-readable description of the web service interface and how thatinterface may be addressed and accessed by clients. Examples ofdocumentation files 220 may include tutorials, reference materials,change histories, release notes, and the like. In some examples,documentation files 220 may be organized into topics and sub-topics.

FIG. 3 is a block diagram illustrating an example system for validatingand generating documentation files for an example documentation topicaccording to some aspects of the present disclosure. As shown in FIG. 3,model processing module 306, similar to model processing module 218shown in FIG. 2, may validate documentation topic 302 and may add anyissues found in documentation topic 302 to issues report 308, and mayalso create documentation based on the documentation topic.

Documentation topic 302 may include information regarding one or moreinterfaces or other software functionality offered by a web service. Theinterface and/or software functionality of the web service documented bydocumentation topic 302 may be semantically defined by a semantic model,so that the semantic model may include a tree of semantic constructs,such as semantic construct 312, that semantically define the interfaceand/or software functionality. Model processing module 306 may validatedocumentation topic 302 by applying business rules 310 to metadata 304associated with documentation topic 302 to cross reference metadata 304with semantic construct 312 to determine if documentation topic 302 issemantically consistent with semantic construct 312. By validatingdocumentation topic 302 with semantic construct 312, model processingmodule 306 may determine if documentation topic 302 is consistent withthe semantic definition of the same subject matter in semantic construct312. Model processing module 306 may also compare the contents ofdocumentation topic 302 against semantic construct 312, and may furthercompare documentation topic 302 against other related documentationtopics.

Metadata 304 may include values that describe associated documentationtopic 302. Metadata 304 for documentation topic 302 may include valuesfor date, topic type, a topic ID, provider, and consumer. The date valuein metadata 304 may indicate the date that documentation topic 302 waslast modified. The topic type value in metadata 304 may indicate thetype of information contained within documentation topic 302. In someexamples, the topic type included in metadata 304 may include one of theDarwin Information Typing Architecture (DITA) types e.g., sample, topic,procedure, etc.). In some examples, the topic type may be a customproto-topic that exists to streamline information development. Forexample, the topic type value may be an “obsolete notice” proto-topic.Custom proto-topics may be converted into standard topics using standardverbiage when model processing module 306 builds the documentation filesbased on documentation topic 302.

The topic ID value in metadata 304 may be used to refer to documentationtopic 302 in another context, such as a “see also” list or an index. Insome examples, topic IDs may be unique amongst all related documentationtopics.

The provider value in metadata 304 may indicate the entity that providedthe content for documentation topic 302. In some examples, validprovider values may include but are not limited to developer, writer,and generator. If the provider is a developer, then a model developer(e.g., a programmer for semantic construct 312) may be responsible forcreating documentation topic 302. If the provider is a writer, then aninformation developer may be responsible for creating documentationtopic 302. If the provider is a generator, then model processing module306 may be responsible for creating documentation topic 302.

The provider value in metadata 304 may affect the creation ofdocumentation files based on documentation topic 302. For example, ifthe provider value in metadata 304 is developer, then it may indicatethat the contents of documentation topic 302 were provided by adeveloper of semantic construct 312. Therefore, the contents ofdocumentation topic 302 may not be of sufficient quality to be publishedexternally. Thus, such documentation topic 302 may have a related topicprovided by a writer. As documentation in the semantic model isprocessed, such as by a document generation module, such as documentgeneration module 224 shown in FIG. 2, to generate documentation files,the content in the documentation files may not be generated based ondocumentation topic 302. Instead, the related topic provided by a writermay be substituted for documentation topic 302 to generate content forthe documentation files that are published externally to end users.

The consumers value in metadata 304 may include user roles that indicatedocumentation topic 302's intended audience. In some examples, validconsumer values may include but are not limited to developer, client,and administrator. If the consumer is denoted as a developer, then theintended audience for documentation topic 302 may be the in-housedevelopment staff. If the consumer is denoted as a client, then theintended audience for documentation topic 302 may be applicationend-users, business users, and/or consumers that have bought theproduct. If the consumer is denoted as administrator, then the intendedaudience for documentation topic may be clients with administratorcapabilities and responsibilities.

Business rules 310 may include one or more tests that may be performedon metadata 304 in documentation topic 302 to determine if documentationtopic 302 has one or more issues, including one or more errors,discrepancies, and the like. One or more of business rules 310 mayinclude validating metadata 304 with semantic construct 312, such as bycross-referencing metadata 304 with semantic construct 312, to determineany discrepancies between documentation topic 302 and semantic construct312 that model the interfaces documented by documentation topic 302, orother related documentation topics, or validate the content with thesemantic constructs of the model.

The one or more business rules may include a business rule that testsconsistency between a documentation topic in the plurality ofdocumentation topics and a semantic construct in the semantic model thatis associated with the documentation topic. The one or more businessrules may include a business rule that tests consistency across otherrelated documentation topics in the plurality of business topics. Thedocumentation topic and its related documentation topics may beassociated with the same semantic construct. The one or more businessrules may include a business rule that tests content of a documentationtopic in the plurality of documentation topics based on the semanticconstructs in the semantic model.

Business rules 310 may test the metadata of documentation topic 302. Forexample, business rules 310 may include a business rule that tests ifdocumentation topic 302 is missing its topic ID in associated metadata304. If documentation topic 302 is missing its topic ID, then it may notbe referenced by other documentation topics. Further, any sub-topicsincluded in documentation topic 302 may also not be referenced by otherdocumentation topics. In some examples, a missing topic ID may beconsidered a low-severity issue that is ignored and not reported inissues report 308.

Business rules 310 may also include a business rule that tests, for eachpiece of content in document topic 302 that is currently under review,if the content has a date value in associated metadata 304 that is lessrecent than every review comment date. If the content that is currentlyunder review has a date value that is more recent than every reviewcomment date, then an entry may be created documenting this issue inissues report 308. The entry into issues report 308 indicating that thisrule was broken by documentation topic 302 may include an indication ofwhich role should be responsible for examining the content.

Business rules 310 may also include a business rule that tests for anyinvalid reference elements in the documentation content of documentationtopic 302 (not shown). A reference may be invalid if it is improperlyformed, if the referenced semantic construct is deleted or relocated, orif there are multiple semantic constructs with the same name in the samecontainer of documentation topic 302. If invalid reference elements arefound in documentation topic 302, then an entry may be createddocumenting this issue in issues report 308 entry.

Business rules 310 may also test consistency across relateddocumentation topics. Documentation topics may be related if they areassociated with the same semantic construct 312. For example, businessrules 310 may include a business rule that tests if documentation topic302 is provided by a model developer (i.e., by checking the providervalue in contained metadata 304). If documentation topic 302 is providedby a model developer then the business rule may test that a relatedtopic provided by an information developer (e.g., technical writer)exists with the same consumers. As discussed above, if a documentationtopic is provided by a model developer, then that documentation topicmay be replaced with a related documentation topic provided by aninformation developer if the documentation topic is published. Ifdocumentation topic 302 is provided by a model developer but a relatedtopic provided by an information developer does not exist with the samedocumentation consumers, then an entry may be created documenting thisdiscrepancy in issues report 308 to indicate that an informationdeveloper should create a related topic.

Similarly, business rule 310 may also include a business rule that testsif documentation topic 302 is provided by an information developer. Ifdocumentation topic 302 is provided by an information developer, thebusiness rule may test if documentation topic 302 has a more recent datethan its related documentation topics provided by a model developer. Ifdocumentation topic 302 is provided by an information developer but oneof its related documentation topics provided by a model developer has amore recent date, then an entry may be created documenting thisdiscrepancy in issues report 308, indicating that an informationdeveloper may need to determine whether the updated content provided bythe model developer should also be made available to non-developmentaudiences.

Business rules 310 may include a business rule that tests consistencybetween documentation topic 302 and semantic construct 312 that isassociated with the documentation topic. For example, business rules 310may include a business rule that validates documentation topic 302 withsemantic construct 312 to test that at least one documentation topic 302that is associated with a deprecated semantic construct in semanticconstruct 312 is a deprecated proto-topic. Conversely, business rule 310may also include a business rule that validates documentation topic 302with semantic construct 312 to test whether semantic construct 312 isdepreciated if documentation topic 302 associated with semanticconstruct 312 is a deprecated proto-topic topic.

Business rules 310 may also include a business rule that validatesdocumentation topic 302 with semantic construct 312 to test that atleast one documentation topic 302 that is associated with an obsoletesemantic construct 312 is an obsolete proto-topic. Conversely, businessrule 310 may also include a business rule that validates documentationtopic 302 with semantic construct 312 to test whether semantic model 312is obsolete if documentation topic 302 associated with semanticconstruct 312 is an obsolete proto-topic by determining if metadata 304associated with documentation topic 302 includes an indication thatdocumentation topic 302 is an obsolete proto-topic.

Business rules 310 may also include a business rule that creates anentry in issues report 308 that reports any topics that are reserved(e.g., reserved for future use).

If model processing module 306 determines that there is an issue indocumentation topic 302 based on applying business rules 310 toassociated metadata 304 and/or documentation content, model processingvalue 306 may insert an entry in issues report 308 documenting theissue. An entry in issues report 308 documenting an issue indocumentation topic 302 may include documentation topic 302's topictype, topic ID, topic provider, topic consumer, references to relatedwork orders, and an indication of the team that is most likely to beable to resolve the issue. Model developers and information developersmay view issues report 308 to determine issues between documentationtopic 302 and semantic model 312, and may be tasked with resolving suchdiscrepancies.

FIG. 4 is a block diagram illustrating an example computing deviceaccording to some aspects of the present disclosure. As shown in theexample of FIG. 4, computing device 400, similar to server 104 shown inFIG. 1 and server 202 shown in FIG. 2, may include one or moreprocessors 402, one or more input devices 404, one or more communicationunits 406, one or more output devices 408, and one or more storagedevices 414. In this example, storage devices 414 of computing device400 may include operating system 416, service providers 418, semanticmodel 420, semantic construct 422, documentation topic 424, modelprocessing module 428, business rules 430, issues report 432, anddocumentation generation modules 434. Communication channels 412 mayinterconnect each of the components 402, 404, 406, 408, and 414 forinter-component communications (physically, communicatively, and/oroperatively). In some examples, communication channels 412 may include asystem bus, a network connection, an inter-process communication datastructure, or any other method for communicating data.

One or more input devices 404 of computing device 400 may receive input.Examples of input are tactile, audio, and video input. Input devices 404of computing device 400, in one example, includes a presence-sensitivedisplay, touch-sensitive screen, mouse, keyboard, voice responsivesystem, video camera, microphone or any other type of device fordetecting input from a human or machine.

One or more output devices 408 of computing device 400 may generateoutput. Examples of output are tactile, audio, and video output. Outputdevices 408 of computing device 400, in one example, includes apresence-sensitive display, sound card, video graphics adapter card,speaker, cathode ray tube (CRT) monitor, liquid crystal display (LCD),or any other type of device for generating output to a human or machine.

One or more communication units 406 of computing device 400 maycommunicate with wired or wireless external devices via one or morenetworks by transmitting and/or receiving network signals on the one ormore networks. For example, computing device 400 may use communicationunit 406 to transmit and/or receive radio signals on a radio networksuch as a cellular radio network. Likewise, communication units 406 maytransmit and/or receive satellite signals on a satellite network such asa GPS network. Examples of communication unit 406 include a networkinterface card (e.g. an Ethernet card), an optical transceiver, a radiofrequency transceiver, a GPS receiver, or any other type of device thatcan send and/or receive information. Other examples of communicationunits 406 may include Bluetooth®, GPS, 3G, 4G, and Wi-Fi® radios foundin mobile devices as well as Universal Serial Bus (USB) controllers.

One or more storage devices 414 within computing device 400 may storeinformation required for use during operation of computing device 400.Storage devices 414, in some examples, have the primary purpose of beingshort term and not long-term computer-readable storage mediums. Storagedevices 414 on computing device 400 may be configured for short-termstorage of information as volatile memory and therefore not retainstored contents if powered off. Examples of volatile memories includerandom access memories (RAM), dynamic random access memories (DRAM),static random access memories (SRAM), and other forms of volatilememories known in the art. Storage devices 414 may further be configuredfor long-term storage of information as non-volatile memory space andretain information after power on/off cycles. Examples of non-volatilememories include magnetic hard discs, optical discs, floppy discs, flashmemories, or forms of electrically programmable memories (EPROM) orelectrically erasable and programmable (EEPROM) memories. Storagedevices 414 may store program instructions and/or data associated withservice providers 418, semantic model 420, semantic construct 422,documentation topic 424, model processing module 428, business rules,issues report 432, and/or document generation modules 434.

One or more processors 402 may implement functionality and/or executeinstructions within computing device 400. For example, processors 402 oncomputing device 400 may read and execute instructions stored by storagedevices 414 that execute the functionality of one or more serviceproviders 418 and model processing module 428. These instructionsexecuted by processors 402 may cause computing device 400 to storeinformation within storage devices 414 during program execution.Processors 402 may execute one or more service providers 418, modelprocessing module 428, and document generation modules 434 to performvarious actions.

Similar to service provider 110 shown in FIG. 1, one or more serviceproviders 418 may include one or more applications, such as one or moreweb applications, that provide one or more software functionality andservices. One or more service providers 418 may include one or moreinterfaces, such as web interfaces, for accessing the software softwarefunctionality and services provided by one or more service providers418. For example, one or more service providers 418's interface mayprovide an API that includes a set of methods that may be called by anexternal client (not shown) via communication units 406 to access asoftware functionality provided by one or more service providers 418.

Semantic model 422 may semantically define the interface of one or moreservice providers 418. Semantic model 422 may be a tree of semanticconstructs, including semantic construct 422 that defines at least aportion of a web interface for accessing service provider 418. Semanticconstruct 422 may include documentation topic 424 that document semanticconstruct 422. Documentation topic 424 may also indicate how semanticconstruct 422 is related to other semantic constructs in semantic model420.

Model processing module 428, similar to model processing module 218shown in FIG. 2 and model processing module 306 shown in FIG. 3, mayprocess application model 420 to generate a service description, such asservice description 108 shown in FIG. 1 and service description 216shown in FIG. 2, that includes a machine-readable description of theinterface of one or more service providers 418. Model processing module428 may process semantic model 422 to generate the service description.

Model processing module 428 may also validate documentation topics,including documentation topic 424, by applying business rules 430,similar to business rules 310 shown in FIG. 3, that cross-reference thedocumentation topics with semantic model 422 and/or relateddocumentation topics, and may report any issues detected in thedocumentation topics by inserting entries in issues report 432, similarto issues report 308 shown in FIG. 3.

Document generation modules 434 may process documents generated by modelprocessing module 428 to generate documentation files for externalconsumption that document the interface of one or more service providers418. Document generation modules 434 may include one or more modulesthat determine whether to include a documentation topic in the generateddocumentation files based on its metadata. For example, the providervalue in the metadata of a documentation topic may affect documentgeneration modules 434's creation of documentation files based on thedocumentation topic. If the provider value in the metadata is developer,then it may indicate that the contents of the documentation topic wereprovided by a developer of semantic model 420 for consumption by otherin-house developers of semantic model 420. Therefore, the contents ofthe documentation topic may not be of sufficient quality to be publishedin the documentation files. Thus, such documentation topic may have arelated topic provided by a writer. As document generation modules 434process documentation in the application model to generate documentationfiles, document generation modules 434 may not generate any content inthe documentation files based on the documentation topic. Instead, therelated topic provided by a writer may be substituted for thedocumentation topic to generate content for the documentation files.

Furthermore, the consumers value in the metadata may affect the creationof documentation files based on the documentation topic, so that topicsthat are not intended for the audience of the documentation files may beremoved. For example, if the consumers value in the metadata isdeveloper (e.g., in-house development staff), then the documentationtopic that includes the metadata may not be included in thedocumentation files because documentation intended for in-housedevelopers may not be published externally.

FIG. 5 is a flowchart illustrating an example process for validating adocumentation topic according to some aspects of the present disclosure.The process may include determining, by at least one processor, one ormore issues in one or more of a plurality of documentation topics thatdocument at least one software functionality based at least uponapplying one or more business rules to the one or more of the pluralityof documentation topics, including one or more of: applying the one ormore business rules to metadata of the one or more of the plurality ofdocumentation topics to cross-reference the metadata of the one or moreof the plurality of documentation topics with a semantic model for theat least one software functionality, applying the one or more businessrules to content of the one or more of the plurality of documentationtopics to cross-reference the content of the one or more of theplurality of documentation topics with the semantic model for the atleast one software functionality, and applying the one or more businessrules to metadata of the one or more of the plurality of documentationtopics and metadata of one or more related documentation topics to testconsistency between the metadata of the one or more of the plurality ofdocumentation topics with the metadata of the one or more relateddocumentation topics (502). The process may further include responsiveto determining the one or more issues, inserting, by the at least oneprocessor, one or more entries into an issue report, wherein the one ormore entries include information regarding the one or more issues (504).

In some examples, applying the one or more business rules to metadata ofthe one or more of the plurality of documentation topics may includeresponsive to determining that a semantic construct associated with theone or more of the plurality of documentation topics in the semanticmodel for the at least one software functionality is obsolete,determining whether the one or more of the plurality of documentationtopics is an obsolete proto-topic based at least in part on the metadataof the one or more of the plurality of documentation topics. In someexamples, applying the one or more business rules to metadata of the oneor more of the plurality of documentation topics may include responsiveto determining that the one or more of the plurality of documentationtopics is an obsolete proto-topic based at least in part on the metadataof the one or more of the plurality of documentation topics, determiningwhether a semantic construct associated with the one or more of theplurality of documentation topics in the semantic model for the at leastone software functionality is obsolete.

In some examples, applying the one or more business rules to metadata ofthe one or more of the plurality of documentation topics may includeresponsive to determining that a semantic construct associated with theone or more of the plurality of documentation topics in the semanticmodel for the at least one software functionality is deprecated,determining whether the one or more of the plurality of documentationtopics is a deprecated proto-topic. In some examples, applying the oneor more business rules to metadata of the one or more of the pluralityof documentation topics may include responsive to determining that theone or more of the plurality of documentation topics is a deprecatedproto-topic based at least in part on the metadata of the one or more ofthe plurality of documentation topics, determining whether a semanticconstruct associated with the one or more of the plurality ofdocumentation topics in the semantic model for the at least one softwarefunctionality is deprecated.

In some examples, applying the one or more business rules to metadata ofthe one or more of the plurality of documentation topics and metadata ofone or more related documentation topics may include responsive todetermining that the one or more of the plurality of documentationtopics is provided by a model developer, determining whether the one ormore related documentation topics is provided by an informationdeveloper. In some examples, applying the one or more business rules tocontent of the one or more of the plurality of documentation topics mayinclude determining if the content of the one or more of the pluralityof documentation topics include one or more invalid reference elements.

In some examples, the metadata of the one or more of the plurality ofdocumentation topics may include one or more of: topic type, topic ID,topic provider, topic consumers, or date of last change. In someexamples, the entry inserted into the issue report includes one or moreof: topic type, topic ancestry, topic title, references to related workorders, topic provider, topic consumer, and team most likely to resolvethe one or more issues. In some examples, the at least one softwarefunctionality may comprise an interface for a web service.

As will be appreciated by one skilled in the art, aspects of the presentinvention may be embodied as a system, method or computer programproduct. Accordingly, aspects of the present invention may take the formof an entirely hardware embodiment, an entirely software embodiment(including firmware, resident software, micro-code, etc.) or anembodiment combining software and hardware aspects that may allgenerally be referred to herein as a “circuit,” “module” or “system.”Furthermore, aspects of the present invention may take the form of acomputer program product embodied in one or more computer readablemedium(s) having computer readable program code embodied thereon.

Any combination of one or more computer readable medium(s) may beutilized. The computer readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer readablestorage medium may be, for example, but not limited to, an electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, or device, or any suitable combination of the foregoing. Morespecific examples (a non-exhaustive list) of the computer readablestorage medium would include the following: an electrical connectionhaving one or more wires, a portable computer diskette, a hard disk, arandom access memory (RAM), a read-only memory (ROM), an erasableprogrammable read-only memory (EPROM or Flash memory), an optical fiber,a portable compact disc read-only memory (CD-ROM), an optical storagedevice, a magnetic storage device, or any suitable combination of theforegoing. In the context of this document, a computer readable storagemedium may be any tangible medium that can contain, or store a programfor use by or in connection with an instruction execution system,apparatus, or device.

A computer readable signal medium may include a propagated data signalwith computer readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer readable signal medium may be any computer readable medium thatis not a computer readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device.

Program code embodied on a computer readable medium may be transmittedusing any appropriate medium, including but not limited to wireless,wireline, optical fiber cable, RF, etc., or any suitable combination ofthe foregoing.

Computer program code for carrying out operations for aspects of thepresent invention may be written in any combination of one or moreprogramming languages, including an object oriented programming languagesuch as Java, Smalltalk, C++ or the like and conventional proceduralprogramming languages, such as the “C” programming language or similarprogramming languages. The program code may execute entirely on theuser's computer, partly on the user's computer, as a stand-alonesoftware package, partly on the user's computer and partly on a remotecomputer or entirely on the remote computer or server. In the latterscenario, the remote computer may be connected to the user's computerthrough any type of network, including a local area network (LAN) or awide area network (WAN), or the connection may be made to an externalcomputer (for example, through the Internet using an Internet ServiceProvider).

Aspects of the present invention are described with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computerreadable medium that can direct a computer, other programmable dataprocessing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

Various examples of the disclosure have been described. These and otherexamples are within the scope of the following claims.

1. A method for validating documentation for at least one softwarefunctionality, comprising: determining, by at least one processor, oneor more issues in one or more of a plurality of documentation topicsthat document at least one software functionality based at least uponapplying one or more business rules to the one or more of the pluralityof documentation topics, including one or more of: applying the one ormore business rules to metadata of the one or more of the plurality ofdocumentation topics to cross-reference the metadata of the one or moreof the plurality of documentation topics with a semantic model for theat least one software functionality, applying the one or more businessrules to content of the one or more of the plurality of documentationtopics to cross-reference the content of the one or more of theplurality of documentation topics with the semantic model for the atleast one software functionality, and applying the one or more businessrules to metadata of the one or more of the plurality of documentationtopics and metadata of one or more related documentation topics to testconsistency between the metadata of the one or more of the plurality ofdocumentation topics with the metadata of the one or more relateddocumentation topics; and responsive to determining the one or moreissues, inserting, by the at least one processor, one or more entriesinto an issues report, wherein the one or more entries includeinformation regarding the one or more issues.
 2. The method of claim 1,wherein applying the one or more business rules to metadata of the oneor more of the plurality of documentation topics further comprises:responsive to determining that a semantic construct associated with theone or more of the plurality of documentation topics in the semanticmodel for the at least one software functionality is obsolete,determining whether the one or more of the plurality of documentationtopics is an obsolete proto-topic based at least in part on the metadataof the one or more of the plurality of documentation topics.
 3. Themethod of claim 1, wherein applying the one or more business rules tometadata of the one or more of the plurality of documentation topicsfurther comprises: responsive to determining that the one or more of theplurality of documentation topics is an obsolete proto-topic based atleast in part on the metadata of the one or more of the plurality ofdocumentation topics, determining whether a semantic constructassociated with the one or more of the plurality of documentation topicsin the semantic model for the at least one software functionality isobsolete.
 4. The method of claim 1, wherein applying the one or morebusiness rules to metadata of the one or more of the plurality ofdocumentation topics further comprises: responsive to determining that asemantic construct associated with the one or more of the plurality ofdocumentation topics in the semantic model for the at least one softwarefunctionality is deprecated, determining whether the one or more of theplurality of documentation topics is a deprecated proto-topic.
 5. Themethod of claim 1, wherein applying the one or more business rules tometadata of the one or more of the plurality of documentation topicsfurther comprises: responsive to determining that the one or more of theplurality of documentation topics is a deprecated proto-topic based atleast in part on the metadata of the one or more of the plurality ofdocumentation topics, determining whether a semantic constructassociated with the one or more of the plurality of documentation topicsin the semantic model for the at least one software functionality isdeprecated.
 6. The method of claim 1, wherein applying the one or morebusiness rules to metadata of the one or more of the plurality ofdocumentation topics and metadata of one or more related documentationtopics further comprises: responsive to determining that the one or moreof the plurality of documentation topics is provided by a modeldeveloper, determining whether the one or more related documentationtopics is provided by an information developer.
 7. The method of claim1, wherein applying the one or more business rules to content of the oneor more of the plurality of documentation topics further comprises:determining if the content of the one or more of the plurality ofdocumentation topics include one or more invalid reference elements. 8.The method of claim 1, wherein the metadata of the one or more of theplurality of documentation topics includes one or more of: topic type,topic ID, topic provider, topic consumers, or date of last change. 9.The method of claim 1, wherein the one or more entries inserted into theissues report includes one or more of: topic type, topic ancestry, topictitle, references to related work orders, topic provider, topicconsumer, and team most likely to resolve the one or more issues. 10.The method of claim 1, wherein the at least one software functionalitycomprises an interface for a web service.